package geom;
import java.awt.*;
import java.io.Serializable;

/**
 * Cette classe abstraite represente une figure graphique.
 * @author Romain POGU
 * @author Anthony MAUGENDRE
 * @version 1.0
 *
 */
public abstract class FigureGraphique implements Figure, Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1789270111872130980L;
	Color cc, cr;
	String nom;
	
	/**
	 * 
	 * Constructeur value de la classe
	 * 
	 * @param cc Couleur de contour
	 * @param cr Couleur de remplissage
	 * @param nom Nom de la FigureGraphique
	 * 
	 */
	public FigureGraphique(String nom, Color cc, Color cr) {
		this.cc = cc;
		this.cr = cr;
		this.nom = nom;
	}


	/**
	 * 
	 * Methode qui retourne la couleur de contour
	 * 
	 * @return cc Color Couleur de contour
	 * 
	 */
	public Color getCc() {
		return cc;
	}

	/**
	 * 
	 * Methode qui retourne la couleur de remplissage
	 * 
	 * @return cc Color Couleur de remplissage
	 * 
	 */
	public Color getCr() {
		return cr;
	}

	/**
	 * 
	 * Methode qui retourne la distance entre deux FigureGraphique
	 * 
	 * @param f1 Figure premiere figure
	 * @param f2 Figure deuxieme figure
	 * @return distance double distance entre f1 et f2
	 * 
	 */
	public static double distance(Figure f1, Figure f2) {
		return Point_2D.distance(f1.getCentre(), f2.getCentre());
	}

	/**
	 * 
	 * Methode abstraite qui permet de dessiner une FigureGraphique.
	 * La methode est abstraite car chaque figure ne se dessine pas de la meme facon
	 * 
	 */
	public abstract void dessineToi(Graphics g);

}